using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SynapseGaming.SunBurn.Framework.Content;
using SynapseGaming.SunBurn.Framework.Core;
using SynapseGaming.SunBurn.Framework.Graphics;
using SynapseGaming.SunBurn.Framework.Models;
using System.IO;
using SynapseGaming.SunBurn.Framework.Graphics.Textures;


namespace GameLibrary
{
	/// <summary>
    /// Base class for all platform specific program implementations.
    /// </summary>
    public class BaseGameProgram
    {
        // Database of game assets.
        public ContentDatabase ContentDatabase { get; private set; }

        public static BaseGameProgram Instance { get; private set; }

        public BaseGameProgram()
        {
            Instance = this;
        }

		/// <summary>
        /// Initialize resources which should be available at any
        /// point during the game (eg: resources that are not screen specific).
        /// </summary>
        public void OnPlatformInitializationComplete()
        {
            ContentDatabase = new ContentDatabase("GameContent");

			// Set the initial game screen.
            Platform.Instance.SetGameScreen(new SimpleGameScreen());
        }

		/// <summary>
        /// Cleanup any resources.
        /// </summary>
        public void Dispose()
        {
            ContentDatabase.Unload();
        }

        public virtual Stream OpenFileStream(string fileName, bool open)
        {
            throw new NotImplementedException();
        }

        public virtual Texture2D LoadExternalTexture(string fileName)
        {
            throw new NotImplementedException();
        }
    }
}
